package com.ruoyi.generator.mapper;

import com.ruoyi.generator.entity.ExportWaterQuality;
import com.ruoyi.generator.entity.ImportWaterQuality;
import com.ruoyi.generator.entity.PlanAssociation;
import com.ruoyi.generator.entity.PlanItemType;
import com.ruoyi.generator.entity.PlanSchedule;
import com.ruoyi.generator.entity.bo.PlanScheduleAreaBO;
import com.ruoyi.generator.entity.bo.PlanScheduleCountBo;
import com.ruoyi.generator.entity.bo.PlanScheduleInfoBO;
import com.ruoyi.generator.entity.bo.PlanScheduleStaticInfoBO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface PlanScheduleMapper {

    void insertPlanSchedule(PlanSchedule planSchedule);

    List<PlanScheduleInfoBO> selectPlanScheduleList(PlanSchedule planSchedule);

    /**
     * 查询数据统计部分 Tz
     *
     * @param planSchedule
     */
    List<PlanScheduleStaticInfoBO> selectPlanScheduleStaticList(PlanScheduleStaticInfoBO planSchedule);

    /**
     * 查询数据统计部分 Tz
     *
     * @param planSchedule
     */
    List<PlanScheduleStaticInfoBO> selectPlanScheduleStaticListHistory(PlanScheduleStaticInfoBO planSchedule);
    /**
     * 修改所有点检任务状态 Tz
     *
     * @param
     */
    void updateAllPs(String planid);
    /**
     * 查询所有巡检区域 Tz
     *
     * @param
     */
    List<PlanScheduleAreaBO> selectPlanScheduleArea();


    /**
     * 统计任务状态的数量 Tz
     *
     * @param
     */
    List<PlanScheduleCountBo> selectPlanScheduleCount();
    /**
     * 修改计划周期状态表状态为已过期
     *
     * @param planScheduleId
     */
    void updatePlanScheduleStatus(@Param("planScheduleId") Integer planScheduleId);

    /**
     * 修改计划周期状态表状态为运行中
     * TZ
     *
     * @param planSchedule
     */
    void updatePlanSchedule(PlanSchedule planSchedule);

    /**
     * 修改计划周期状态表状态为未开始，并把设备状态设置null
     *
     * @param planSchedule
     */
    void updatePlanScheduleDeviceStatus(PlanSchedule planSchedule);

    /**
     * 查询待处理数据
     * TZ
     *
     * @param planSchedule
     */
    List<PlanScheduleInfoBO> selectPlanScheduleListwait(PlanSchedule planSchedule);


    /**
     * 查询待处理数据
     * TZ
     *
     * @param planSchedule
     */
    List<PlanScheduleInfoBO> selectPlanScheduleListAll(PlanSchedule planSchedule);

    /**
     * 修改计划周期状态表状态为运行中
     *
     * @param planScheduleId
     */
    void updatePlanScheduleStatusRun(@Param("planScheduleId") Integer planScheduleId);

    /**
     * 根据设备编号获取设备检测信息
     *
     * @param planAssociation
     * @return
     */
    List<PlanScheduleInfoBO> selectEquipmentPlanInfo(PlanAssociation planAssociation);

    /**
     * 根据ID获取点检计划与周期状态信息
     *
     * @param planScheduleId
     * @return
     */
    PlanSchedule selectPlanScheduleById(@Param("planScheduleId") Integer planScheduleId);

    ImportWaterQuality getExportWaterData();

    ImportWaterQuality getImportWaterData();

    /**
     * 修改计划周期状态表状态为已完成
     *
     * @param planScheduleId
     */
//    void updatePlanScheduleStatusOk(@Param("planScheduleId") Integer planScheduleId);

    //查询点检项和设备名称
    List<PlanItemType>  selectEquipmentTypeList();

    List<PlanItemType>  selectCheckItemList();

}
